package com.szit.test.biz.impl;

import com.szit.test.biz.SaleBiz;
import com.szit.test.dao.SaleDao;
import com.szit.test.dao.impl.SaleDaoImpl;
import com.szit.test.entity.PageIndexer;
import com.szit.test.entity.Sale;

import java.util.List;

/**
 * 功能：教师业务逻辑层实现类
 * 进行业务规则或者商业逻辑的判断和处理
 *
 * @author 勇哥
 * @version 1.0 2025-05-15
 */
public class SaleBizImpl implements SaleBiz {
    private SaleDao tdao;

    public SaleBizImpl(){
        tdao = new SaleDaoImpl();
    }

    /**
     * 添加教师数据
     *
     * @param t 教师实体对象
     * @return 返回是否添加成功的状态：1添加成功，0添加失败，-1主键重复
     */
    public int insert(Sale t){
        int flag = -1;

        // 判断主键是否重复
        if(tdao.getTeacherById(t.getId()) == null){
            // 调用添加方法
            boolean state = tdao.addTeacher(t);
            // 判断是否添加成功
            if(state){
                flag = 1;
            }else{
                flag = 0;
            }
        }

        return flag;
    }

    /**
     * 修改教师数据
     *
     * @param t 教师实体对象
     * @return 返回是否修改成功的状态：1修改成功，0修改失败，-1没找到教师
     */
    public int update(Sale t){
        int flag = -1;

        // 判断教师是否存在
        if(tdao.getTeacherById(t.getId()) != null){
            // 调用修改方法
            boolean state = tdao.updateTeacher(t);
            // 判断是否修改成功
            if(state){
                flag = 1;
            }else{
                flag = 0;
            }
        }

        return flag;
    }

    /**
     * 删除教师数据
     *
     * @param id 教师编号
     * @return 返回是否删除成功的状态：1删除成功，0删除失败，-1没找到教师
     */
    public int delete(int id){
        int flag = -1;

        // 判断教师是否存在
        if(tdao.getTeacherById(id) != null){
            // 调用添加方法
            boolean state = tdao.deleteTeacher(id);
            // 判断是否删除成功
            if(state){
                flag = 1;
            }else{
                flag = 0;
            }
        }

        return flag;
    }

    /**
     * 获取所有教师信息
     *
     * @return 返回教师实体集合
     */
    public List<Sale> list(){
        return tdao.getAllTeachers();
    }

    /**
     * 根据教师编号获取教师信息
     *
     * @param id 教师编号
     * @return 返回教师实体对象
     */
    public Sale search(int id) {
        return tdao.getTeacherById(id);
    }

    /**
     * 分页显示教师信息
     *
     * @param page 分页器
     * @return 返回指定页码的数据
     */
    public List<Sale> searchByPage(PageIndexer page) {
        return tdao.getTeachersByPage(page);
    }

    @Override
    public List<Sale> search(Sale t, String sex) {
        return tdao.getTeachersByIf(t,sex);
    }

    @Override
    public List<Sale> searchByPage(Sale t, String sex, PageIndexer page) {
        return tdao.getTeachersByPage(t,sex,page);
    }
}

